#include <iostream>
#include <semaphore.h>

class Sem
{
public:
    Sem(int value)
    {
        sem_init(&_sem, 0, value); // 初始化信号量
    }
    ~Sem()
    {
        sem_destroy(&_sem); // 销毁信号量
    }
    void P() // P操作
    {
        sem_wait(&_sem);
    }
    void V() // V操作
    {
        sem_post(&_sem);
    }

private:
    sem_t _sem;
};